package downpacket

import "gitee.com/yanwc/ebike-xiaoan-device/internal/field"

// GPS 消息体
type Gps struct {
	Timestamp int64   `json:"timestamp"`
	Lat       float64 `json:"lat"`
	Lng       float64 `json:"lng"`
	Speed     float64 `json:"speed"`
	Course    int     `json:"course"`
}

// 基站信息
type Cell struct {
	Mcc   int        `json:"mcc"`
	Mnc   int        `json:"mnc"`
	Cells []CellItem `json:"cells"`
}

type CellItem struct {
	Lac int `json:"lac"`
	Ci  int `json:"ci"`
	Rxl int `json:"rxl"`
}

// 脚撑类型
type KickStand struct {
	Type          field.KickStandType `json:"type"`
	KickModelID   int                 `json:"kickModelID"`
	KickStationID int                 `json:"kickStationID"`
	MagState      field.MagneticState `json:"magState"`
	RfState       field.RFIDState     `json:"rfState"`
	Version       string              `json:"version"`
	CardId        field.RFIDLabel     `json:"cardID"`
}

type HeadingProduct struct {
	HeadingAngle float64 `json:"headingAngle"` // 方向角，单位：0.1°
	FixType      int     `json:"fixtype"`
	AccHeading   int     `json:"accHeading"`  // 方向因子
	ResetFixNum  int     `json:"resetFixnum"` // 惯导重载次数
	AgcCnt       int     `json:"agcCnt"`      // 天线增益参数
	GpsSignals   string  `json:"gpsSignals"`  // 卫星信噪比参数阵列
}

// 蓝牙道钉信息(系统参数isTBeaconEnable = 1时返回
type TBeaCon struct {
	TBeaconAddr string  `json:"tBeaconAddr"` // 蓝牙道钉地址
	TBeaconId   string  `json:"tBeaconId"`   // 蓝牙道钉ID号
	TBeaconSOC  float64 `json:"tBeaconSOC"`  // 蓝牙道钉剩余电量百分比
	RealRssi    int     `json:"realRssi"`    // 蓝牙道钉信号强度
	TBeaconVsn  string  `json:"TbeaconVsn"`  // 蓝牙道钉版本号
}

type StatusInfo struct {
	VoltageMv        int             `json:"voltageMv"`   // 电压，单位：毫伏
	Gsm              int             `json:"gsm"`         // GSM 信号强度
	WheelLock        *int            `json:"wheelLock*"`  // 后轮机械锁开关状态： 0：未上锁 1：上锁
	IsWheelSpan      int             `json:"isWheelSpan"` // 轮动状态：0：轮子静止 1：轮子转动
	AudioType        int             `json:"audioType"`   // 语音版本（用于检验语音定制是否成功）
	TotalMiles       int             `json:"totalMiles"`  // 历史总里程，单位：米
	Gps              *Gps            `json:"gps"`
	Cell             *Cell           `json:"cell"`
	KickStand        *KickStand      `json:"kickStand*"`
	IsHeadingProduct int             `json:"isHeadingProduct"` // 产品类型: 0：非定向停车产品 1：定向停车产品
	Heading          *HeadingProduct `json:"heading"`          // 定向停车产品响应消息体，若不是定向停车产品，该字段省略
	TBeaCon          *TBeaCon        `json:"tBeaCon"`          // 蓝牙道钉信息(系统参数isTBeaconEnable = 1时返回
}
